home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / RCS / scsi.h,v < prev    next >
Text File  |  1989-06-03  |  3KB  |  98 lines

  1. head     1.1;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.1
  10. date     89.04.12.21.03.58;  author mendel;  state Exp;
  11. branches ;
  12. next     ;
  13.  
  14.  
  15. desc
  16. @Scsi device IO Controls.
  17. @
  18.  
  19.  
  20.  
  21. 1.1
  22. log
  23. @Initial revision
  24. @
  25. text
  26. @/*
  27.  * scsi.h --
  28.  *
  29.  *    Declarations of the user level interface to SCSI devices. The
  30.  *    interface defined in this file allows user level programs to 
  31.  *    send arbitrary SCSI commands to SCSI devices.  The interface
  32.  *    users Sprite Io_Controls to send the SCSI command block and 
  33.  *    a pointer to a data buffer in user address space to the device.
  34.  *    The SCSI status byte and any sense data is returned using the
  35.  *    out buffer of the Io_Control. The IO_COntrols defined in this
  36.  *    file should work with any SCSI device (ie SCSI Disk, SCSI Tape, 
  37.  *    SCSI Worm, etc) as well as the HBA device driver.
  38.  *
  39.  * Copyright 1989 Regents of the University of California
  40.  * Permission to use, copy, modify, and distribute this
  41.  * software and its documentation for any purpose and without
  42.  * fee is hereby granted, provided that the above copyright
  43.  * notice appear in all copies.  The University of California
  44.  * makes no representations about the suitability of this
  45.  * software for any purpose.  It is provided "as is" without
  46.  * express or implied warranty.
  47.  *
  48.  * $Header: /sprite/lib/forms/RCS/proto.h,v 1.2 89/01/07 04:12:44 rab Exp $ SPRITE (Berkeley)
  49.  */
  50.  
  51. #ifndef _DEVSCSI
  52. #define _DEVSCSI
  53.  
  54. /*   
  55.  * Scsi-device specific commands:
  56.  *
  57.  *   IOC_SCSI_COMMAND        Issue a SCSI command
  58.  */
  59. #define IOC_SCSI            (7 << 16)
  60. #define IOC_SCSI_COMMAND        (IOC_SCSI | 0x1)
  61.  
  62. /*
  63.  * IOC_SCSI_COMMAND
  64.  * The one IN parameter specifies the SCSI command block, data buffer,
  65.  * and data transfer direction.
  66.  */
  67. typedef struct Dev_ScsiCommand {
  68.     int        bufferLen;    /* The length of the data buffer in bytes. */
  69.     Address    buffer;        /* The data buffer for this command. */
  70.     Boolean    dataToDevice;    /* TRUE -> data is transferred to the device.
  71.                  * FALSE -> data is transferred from the device.
  72.                  * Meaningless if bufferLen is 0. */
  73.     /*
  74.      * The SCSI command block immediately follows the Dev_ScsiCommand 
  75.      * structure and extends to the end of the input buffer.
  76.      */
  77. } Dev_ScsiCommand;
  78.  
  79. /*
  80.  * IOC_SCSI_COMMAND returns in the output parameter the scsi Status
  81.  * block.
  82.  */
  83.  
  84. typedef struct Dev_ScsiStatus {
  85.     int        statusByte;    /* Scsi status byte as returned by the
  86.                  * device. */
  87.     int  amountTransferred;    /* Number of data bytes transferred by the
  88.                  * command into the user's buffer. */
  89.     int       senseDataLen;    /* The number of bytes of sense data returned
  90.                  * by the device.  The sense data immediately
  91.                  * follows the Dev_ScsiStatus structure in
  92.                  * the output buffer. */
  93. } Dev_ScsiStatus;
  94.  
  95.  
  96. #endif /* _DEVSCSI */
  97. @
  98.